home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 10 / The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso / PC_SIGCD / 02 / 0 / DISK0204.ZIP / FCMAGIC.ASM < prev    next >
Assembly Source File  |  1984-06-01  |  5KB  |  187 lines

  1. ;  Assembly language routines for FCOPY
  2.  
  3. ;  (C) Copyright, Peter Norton 1983-4
  4.  
  5. ;  01 Jun  84 -- minor changes made for free distribution
  6.  
  7. ;  28 Oct  83 -- change disk functions to report error codes
  8.  
  9. ;  25 oct  83 -- chrget added (from prod-200/magic83d)
  10. ;                ifchr  added (returns 0 if no character)
  11. ;                lobeep added
  12.  
  13. ;  28 july 83 -- written
  14.  
  15. ; full track (8-sector) read, write, format, verify
  16.  
  17. ; function readt (drive,track,segment,offset) : word 
  18. ;          writt
  19. ;          formt           return 0 if ok, error code in hi byte 
  20. ;          verit
  21.  
  22. magic  segment 'code'
  23.        assume  cs:magic
  24.  
  25.   public ifchr 
  26.   public chrget
  27.   public readt
  28.   public writt
  29.   public formt
  30.   public verit
  31.  
  32. ; --------------------------------------------------------------------
  33.  
  34. ; Copyright notice
  35.  
  36. cright proc  far
  37.        db    ' (C) Copyright 1983-4, Peter Norton '
  38. cright endp
  39.  
  40. ; --------------------------------------------------------------------
  41.  
  42. ; IFCHR like chrget, but doesn't wait for keystroke
  43. ;
  44. ;   procedure ifchr  (var x: word);
  45. ;     external;
  46.  
  47. ifchr  proc  far
  48.        push  bp
  49.        mov   bp,sp
  50.        mov   ah,1
  51.        int   16h
  52.        mov   ax,0         ; set zero
  53.        jz    ifchr_ret    ; if no code, skip
  54.        mov   ah,0         ; else read the code
  55.        int   16h
  56. ifchr_ret:
  57.        mov   bp,[bp+06]
  58.        mov   [bp],ax
  59.        pop   bp
  60.        ret   2
  61. ifchr  endp
  62.  
  63. ; --------------------------------------------------------------------
  64.  
  65. ; CHRGET gets a keyboard character, with special indication
  66. ;
  67. ;   tested 6/20/82 (both assembly and Pascal)
  68. ;
  69. ;   procedure chrget (var x: word);
  70. ;     external;
  71.  
  72. chrget proc  far
  73.        push  bp
  74.        mov   bp,sp
  75.        mov   ah,0
  76.        int   16h
  77.        mov   bp,[bp+06]
  78.        mov   [bp],ax
  79.        pop   bp
  80.        ret   2
  81. chrget endp
  82.  
  83.  
  84. ; --------------------------------------------------------------------
  85.  
  86. readt  proc  far
  87.        push bp
  88.        mov  bp,sp
  89.        mov  dl,[bp+12]   ; drive
  90.        mov  dh,0         ; head (always zero)
  91.        mov  ch,[bp+10]   ; track
  92.        mov  cl,1         ; sector number
  93.        mov  ax,[bp+08]   ; segment
  94.        mov  es,ax
  95.        mov  bx,[bp+06]   ; offset
  96.        mov  ah,2         ; service number 2 = read
  97.        mov  al,8         ; number of sectors
  98.        int  13h
  99.        mov  al,1               ; assume bad (true)
  100.        jc   readt_return       ; test carry (is set, bad)
  101.        mov  ax,0               ; set good (false)
  102. readt_return:    
  103.        pop  bp
  104.        ret  8 
  105.  
  106. readt  endp
  107.  
  108. ; --------------------------------------------------------------------
  109.  
  110. writt  proc  far
  111.        push bp
  112.        mov  bp,sp
  113.        mov  dl,[bp+12]   ; drive
  114.        mov  dh,0         ; head (always zero)
  115.        mov  ch,[bp+10]   ; track
  116.        mov  cl,1         ; sector number
  117.        mov  ax,[bp+08]   ; segment
  118.        mov  es,ax
  119.        mov  bx,[bp+06]   ; offset
  120.        mov  ah,3         ; service number 3 = write
  121.        mov  al,8         ; number of sectors
  122.        int  13h
  123.        mov  al,1               ; assume bad (true)
  124.        jc   writt_return       ; test carry (is set, bad)
  125.        mov  ax,0               ; set good (false)
  126. writt_return:    
  127.        pop  bp
  128.        ret  8 
  129.  
  130. writt  endp
  131.  
  132. ; --------------------------------------------------------------------
  133.  
  134. formt  proc  far
  135.        push bp
  136.        mov  bp,sp
  137.        mov  dl,[bp+12]   ; drive
  138.        mov  dh,0         ; head (always zero)
  139.        mov  ch,[bp+10]   ; track
  140.        mov  cl,1         ; sector number
  141.        mov  ax,[bp+08]   ; segment
  142.        mov  es,ax
  143.        mov  bx,[bp+06]   ; offset
  144.        mov  ah,5         ; service number 5 = format
  145.        mov  al,8         ; number of sectors
  146.        int  13h
  147.        mov  al,1               ; assume bad (true)
  148.        jc   formt_return       ; test carry (is set, bad)
  149.        mov  ax,0               ; set good (false)
  150. formt_return:    
  151.        pop  bp
  152.        ret  8 
  153.  
  154. formt  endp
  155.  
  156. ; --------------------------------------------------------------------
  157.  
  158. verit  proc  far
  159.        push bp
  160.        mov  bp,sp
  161.        mov  dl,[bp+12]   ; drive
  162.        mov  dh,0         ; head (always zero)
  163.        mov  ch,[bp+10]   ; track
  164.        mov  cl,1         ; sector number
  165.        mov  ax,[bp+08]   ; segment
  166.        mov  es,ax
  167.        mov  bx,[bp+06]   ; offset
  168.        mov  ah,4         ; service number 4 = verify
  169.        mov  al,8         ; number of sectors
  170.        int  13h
  171.        mov  al,1               ; assume bad (true)
  172.        jc   verit_return       ; test carry (is set, bad)
  173.        mov  ax,0               ; set good (false)
  174. verit_return:    
  175.        pop  bp
  176.        ret  8 
  177.  
  178. verit  endp
  179.  
  180. ; --------------------------------------------------------------------
  181.  
  182.  
  183. magic  ends
  184.  
  185.        end
  186.  
  187.